/**
 * @file bsp_pwm.h
 * @author SunWater
 * @brief PWM控制
 * @version 0.1
 * @date 2025-05-03
 *
 */

#include "main.h"

#ifndef __BSP_PWM_H
#define __BSP_PWM_H

// 无需设置，在PWM_init函数中设置
typedef struct {
    TIM_HandleTypeDef *pwm_htim;  // PWM计数器句柄
    uint32_t tim_channel;         // 计数器通道
    uint32_t tim_period;          // 计数周期
} PWM;

// c++内容
#ifdef __cplusplus

#endif

// c语言内容
#ifdef __cplusplus
extern "C" {
#endif

/// @brief PWM初始化函数
/// @param pwm 指针，指向PWM结构体
/// @param pwm_config 指针，指向PWM配置结构体
void PWM_init(PWM *pwm, TIM_HandleTypeDef *pwm_htim, uint32_t tim_channel);

/// @brief 设置PWM占空比
/// @param pwm 指针，指向PWM结构体
/// @param duty 占空比
void PWM_set_duty(PWM *pwm, uint32_t duty);

/// @brief 设置PWM占空比百分比
/// @param pwm 指针，指向PWM结构体
/// @param duty_percent 占空比百分比
void PWM_set_duty_percent(PWM *pwm, float duty_percent);

/// @brief 设置PWM为100%占空比
void PWM_set_full(PWM *pwm);

/// @brief 设置PWM为0%占空比
void PWM_set_zero(PWM *pwm);

#ifdef __cplusplus
}
#endif

#endif
